#ifndef EXPORTSTATEADAPTER_H
#define EXPORTSTATEADAPTER_H

#include <QObject>
#include <QStringList>
#include "unifiedexportstatemanager.h"
#include "exportuistatesynchronizer.h"
#include "stateupdatethrottler.h"

class MainWindow;
class MergedExportManager;
class QPushButton;
class QProgressBar;
class QLabel;

/**
 * ExportStateAdapter - 导出状态适配器
 * 
 * 将新的统一导出状态管理器适配到现有的StatusBarManager中
 * 提供向后兼容性和渐进式迁移支持
 */
class ExportStateAdapter : public QObject
{
    Q_OBJECT

public:
    explicit ExportStateAdapter(QObject* parent = nullptr);
    ~ExportStateAdapter();
    
    // 初始化方法
    void initialize(MainWindow* mainWindow, MergedExportManager* exportManager);
    void setUIComponents(QPushButton* exportButton, QProgressBar* progressBar, QLabel* statusLabel);
    
    // 文件管理
    void setFiles(const QStringList& filePaths);
    void addFile(const QString& filePath);
    void removeFile(const QString& filePath);
    void clearFiles();
    
    // 导出控制
    void startExport();
    void cancelExport();
    void retryExport();
    
    // 状态查询
    bool canExport() const;
    bool isExporting() const;
    UnifiedExportStateManager::ExportState currentState() const;
    
    // 配置
    void setAnimationEnabled(bool enabled);
    void setTooltipEnabled(bool enabled);
    void setThrottleEnabled(bool enabled);

signals:
    // 导出控制信号
    void exportRequested();
    void exportCancelled();
    void exportRetried();
    
    // 状态变化信号
    void stateChanged(UnifiedExportStateManager::ExportState newState);
    void canExportChanged(bool canExport);
    
    // Toast消息信号
    void showToast(const QString& message);
    void showError(const QString& error);
    void showSuccess(const QString& message);

private slots:
    // 统一状态管理器信号处理
    void onStateChanged(UnifiedExportStateManager::ExportState newState, 
                       UnifiedExportStateManager::ExportState oldState);
    void onFileStateChanged(UnifiedExportStateManager::FileState newState);
    void onExportStarted(int totalFiles);
    void onExportProgressChanged(int completed, int total, const QString& status);
    void onExportCompleted();
    void onExportFailed(const QString& error);
    void onExportCancelled();
    void onErrorOccurred(const UnifiedExportStateManager::ExportError& error);
    
    // 节流器信号处理
    void onStateUpdateRequested(const StateUpdateThrottler::StateUpdateRequest& request);

private:
    // 内部方法
    void setupConnections();
    void updateExportManager();
    void handleExportError(const UnifiedExportStateManager::ExportError& error);
    QString formatErrorMessage(const UnifiedExportStateManager::ExportError& error) const;

private:
    // 核心组件
    UnifiedExportStateManager* m_stateManager;
    ExportUIStateSynchronizer* m_uiSynchronizer;
    StateUpdateThrottler* m_throttler;
    
    // 外部组件引用
    MainWindow* m_mainWindow;
    MergedExportManager* m_exportManager;
    QPushButton* m_exportButton;
    QProgressBar* m_progressBar;
    QLabel* m_statusLabel;
    
    // 状态跟踪
    bool m_initialized = false;
    QStringList m_currentFiles;
    
    // 配置
    bool m_animationEnabled = true;
    bool m_tooltipEnabled = true;
    bool m_throttleEnabled = true;
};

#endif // EXPORTSTATEADAPTER_H
